from odoo import http
from odoo.addons.library_app.controllers.main import Books


class BookExtended(Books):
    @http.route()
    def list(self, **kwargs):
        """
        list()方法带有**kwargs参数，捕获所有kwargs字典中的参数。这些是 URL 中的参数，如?available=1
        方法检测kwargs中available键的值，检测到后改变qcontext来获取仅为可借阅图书的图书记录集
        :param kwargs:
        :return:
        """
        # 使用super()来运行已有代码
        # 处理结果返回一个 Response 对象，Response 带有模块要渲染的属性 template，以及渲染使用的上下文qcontext
        response = super().list(**kwargs)
        if kwargs.get('available'):
            Book = http.request.env['library.book']
            books = Book.search([('is_available', '=', True)])
            response.qcontext['books'] = books
        return response